Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2022-ICLR-[P3Mix]Who Is Your Right Mixup Partner in Positive and Unlabeled Learning

https://openreview.net/forum?id=NH29920YEmj

Introduction

PUにMixupを導入する先行研究はいろいろあった。研究していくうちに、Negative Assumptionという識別器がPを予想以上に少なく判断する問題が起きている。

Image in a image block

この研究では、上図のようにうまくmix-upする相手を選びつつdata augmentationをすることで、決定境界が過度にPをNに予測することを防ぐ。

識別境界の近くにある、Pっぽいけど実際Uとして扱われるのでcost-sensitiveでは重み付きのNとして扱われ、そしてその境界上のデータの存在は小さく扱われているのではないか、という仮説。

アイディアは、真の識別境界(実線)と偏ってしまったPUによる識別境界(点線)の間にある、実はPだがUになっているデータたちをPとすることができれば、Negative Assumptionを解決できないか?というもの。

Method

MixUpを用いたPUは以下のような形をしているのが普通である。β\betaは何かしらの重みを表す係数

Image in a image block

P3Mixでは、以下のように修正する。Mixupしたデータで学習していく。

Image in a image block
Image in a image block

ここのheuristic mixupで妥当なmixupパートナーを見つけるという感じである。

先述のように、境界線付近のPデータはPU LearningさせるとNとして予測されがちであった。なので、現在の識別境界の近くにあるようなPデータ(PデータはPUで与えられるので)からmixupのプールXcndX_{cnd}を作りたいよね。

具体的には、以下の方針でmixupする。

  1. あるサンプルxi,yj\mathbf{x}_i, y_jがあるとする。
  2. もしxi\mathbf{x}_iがUで(XcndX_{cnd}に入っておらず)、しかも識別境界の近くにある(これは後述のXmpnX_{mpn}に所属に該当)ならば、XcndX_{cnd}から一様にmixup相手を選ぶ。
  3. そうでないのならば、全体のサンプルから一様に選ぶ。

どのように識別境界の近くにある判定をする

f(g(x))f(g(\mathbf{x}))ffがsigmoid関数で、[0,1][0, 1]にcalibrateした識別器だとする。

この時、識別境界の近くというのは、γ[0.5,1]\gamma \in [0.5, 1]について、Uのデータ(y=0y=0はここでUという意味)かつ予測器の出力が、例えばγ=0.6\gamma = 0.6なら0.4f(g(x))0.60.4 \leq f(g(\mathbf{x})) \leq 0.6の範囲にあるようなデータを曖昧なものとする。

距離ベースではなく。確率ベースで判断。

Image in a image block

当然、識別境界の近くにあるといっても当然XcndX_{cnd}に含まれない(そこに入っているのはPの中から選び出される)のが前提。

XcndX_{cnd}の選び方

XPX_Pの中から選び出す。

これは一定期間(毎エポックかな?)、xXP\mathbf{x} \in X_Pについて、f(g(x))f(g(\mathbf{x}))の値について、Entropyを計算する。そして、Entropyが大きい方からtop-kで選ぶ。

他の工夫

すべてにおいて、

これだけでは学習が不安定になりがちなので、そこにさらにEarly-learning RegularizationとPseudo Negative Instance Calibrationする。

Early-learning Regularizationは学習の早期段階で以下のようなものをつける。つまり、学習の早期ではUはNegativeとしてみなしたうえで、Pの予測結果はPに近く、Uの予測結果はNの近くになるように仕向ける。

これを用いるにはP3Mix-Eというアルゴリズム。

Relr=EXpXU[log(1f(g(x)),y)]R_{elr} = \mathbb{E}_{X_p \cup X_U } [\log(1 - \langle f(g(\mathbf{x})), y \rangle)]

Pseudo Negative Instanceは、Uの中でも先ほど使ったγ\gammaによって、f(g(x))γf(g(\mathbf{x})) \geq \gamma となるようなサンプルはほぼ確実にPだということで、今のイテレーション限定で、Pとして扱う

これを用いるのはP3Mix-Cというもの。実験結果的にはこれは一番良かった。

具体的な実装について

OpenReviewに上がっているzipにあるコードを見る限り、どのP3Mixであっても

  • 早い段階では、UをNとみなしてPN learningをしている。
  • Mix-upした結果を最後にEntropy Minimizationをすることで、予測を偏らせることができる。

Experiments

  • FMNISTを使った。
    • Pは1, 4, 7でNはそれ以外。そしてNは1, 4, 7でPはそれ以外で実験。
  • CIFAR10を使った。
    • Pは0, 1, 8, 9でNはそれ以外。そしてNは0, 1, 8, 9でPはそれ以外で実験。
  • STL10を使った。
    • Pは0, 2, 3, 8, 9でNはそれ以外。そしてNは0, 2, 3, 8, 9でPはそれ以外で実験。

結果

  • nnPUにmixupを入れるより、この手法のほうがよかった
  • だいたいの手法はGANベースのPANより良かったらしい。
  • β\beta(PとUのreweightingで使われる重みはハイパラ)はβ0.8\beta \geq 0.8で安定するらしい。
  • γ\gamma(境界線近くであるの判定)はγ=0.85,0.9,0.95\gamma = 0.85, 0.9, 0.95で安定するらしい。